package com.sinopec.android.util;

import java.io.File;
import java.io.FileOutputStream;

import com.sinopec.android.constant.ConfigAttrs;


import android.os.Environment;
import android.util.Log;


/**
 * 日志工具包
 * @author liuwei
 *
 */
public class LogUtil {

	/**
	 * 打印普通信息
	 * @param tag
	 * @param msg
	 */
	public static void printInfo(String msg){
		if(ConfigAttrs.IS_PRINT_LOG){
			Log.v(ConfigAttrs.PAKGE_NAME, msg);
			if(ConfigAttrs.IS_SAVE_LOG){
				//判断是否挂载sd卡
				if(Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED))
					//保存日志到sd卡里
					recordLog(ConfigAttrs.SD_PATH, ConfigAttrs.LOG_FILENAME, msg, true);
			}
		}
	}
	
	
	/**
	 * 功能：记录日志<br>
	 * @param savePathStr 保存日志路径
	 * @param saveFileNameS 保存日志文件名
	 * @param saveDataStr 保存日志数据
	 * @param saveTypeStr 保存类型，fals为覆盖保存，true为在原来文件后添加保存
	 */
	public static void recordLog(String savePathStr,String saveFileNameS,String saveDataStr,boolean saveTypeStr) {

		try {

			String savePath = savePathStr;
			String saveFileName = saveFileNameS;
			String saveData = saveDataStr;
			boolean saveType =saveTypeStr;

			// 准备需要保存的文件
			File saveFilePath = new File(savePath);
			if (!saveFilePath.exists()) {
				saveFilePath.mkdirs();
			}
			File saveFile = new File(savePath +File.separator+ saveFileName);
			if (!saveType && saveFile.exists()) {
				saveFile.delete();
				saveFile.createNewFile();
				// 保存结果到文件
				FileOutputStream fos = new FileOutputStream(saveFile, saveType);
				fos.write(saveData.getBytes());
				fos.close();
			} else if (saveType && saveFile.exists()) {
				//saveFile.createNewFile();
				if(saveFile.length()>1024*1024){//当文件大于1M时，删除文件，重新创建日志文件
					saveFile.delete();
					saveFile.createNewFile();
				}
				FileOutputStream fos = new FileOutputStream(saveFile, saveType);
				fos.write(saveData.getBytes());
				fos.close();
			}else if (saveType && !saveFile.exists()) {
				saveFile.createNewFile();
				FileOutputStream fos = new FileOutputStream(saveFile, saveType);
				fos.write(saveData.getBytes());
				fos.close();
			}

		} catch (Exception e) {
			saveDataStr = e.getMessage();
			recordLog(savePathStr, saveFileNameS, saveDataStr, saveTypeStr);
			
			e.printStackTrace();
		}


	}
}
